﻿namespace 汉诺塔递归
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //确定柱子的高度
            Console.WriteLine("请输入一个正整数");
            int height = Convert.ToInt32(Console.ReadLine());
            //调用函数Move
            Move(height, 'A', 'C', 'B');
            Console.ReadKey();
        }
        private static void Move(int n, char start, char middle, char end)
        {
            //如果只有一个圆盘，直接将圆盘从开始柱移动到目标柱
            if (n == 1)
            {
                Console.WriteLine($"移动{n}号圆盘 {start}->{end}");
            }
            else
            {   //将除最后一个圆盘以外的其余圆盘从开始柱移动到中间柱
                //第一次使用递归调用
                Move(n - 1, start, end, middle);
                //将最后一个圆盘移动到目标柱
                Console.WriteLine($"移动{n}号圆盘 {start}->{end}");
                //再将中间柱的n-1个圆盘移动到目标柱
                //第二次使用递归调用
                Move(n - 1, middle, start, end);
            }
        }
    }
}